home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / qed_397 / sourcen / xufsl.h < prev   
Text File  |  1995-12-09  |  13KB  |  202 lines

  1. /**************************************************************************/
  2. /* Definitionen für den xUFSL                                             */
  3. /*                                                                        */
  4. /* 10.09.94 Version 1.00                                                  */
  5. /* 14.09.94 Erweitert um Definitionen des UFSL Version 0.91-0.97          */
  6. /*          Event-Funktion aus dem xUFSL-Aufruf entfernt                  */
  7. /*          Rückgabewerte an UFSL angepaßt. Die Wert UFS_NO_FONTS und     */
  8. /*          UFS_NO_FONTSIZE sind nur aus Kompatibilitätsgründen defi-     */
  9. /*          niert. Solche Fehler werden intern vom xUFSL abfangen (hof-   */
  10. /*          fentlich...).                                                 */
  11. /* 18.09.94 Neue Flags UFS_AUTO_UPDATE und UFS_ERROR_MSG.                 */
  12. /* 28.09.94 Neue Flags UFS_BITMAP_FONTS und UFS_KERNING_INFO.             */
  13. /*          Schriftbreite erweitert: Struktur FW_INFO. In der Struktur    */
  14. /*          wird neben der Zeichenbreite die Weite des Track-Kernings     */
  15. /*          und die Aktivierung des Paar-Kernings zurückgegeben.          */
  16. /*          Definition der max. Zeichenbreite MAX_CHAR_WIDTH.             */
  17. /* 01.10.94 UFS_AUTO_UPDATE wieder abgeschafft.                           */
  18. /*          Neues Flag UFS_INDIRECT und Struktur XUFSL_LIST.              */
  19. /*          Wenn UFS_INDIRECT gesetzt ist, wird der Parameter info beim   */
  20. /*          beim xUFSL-Aufruf als Zeiger auf eine XUFSL_LIST interpre-    */
  21. /*          tiert. Die Anzahl der Einträge in dieser Liste muß im Parame- */
  22. /*          ter fontid, der erste selektierte Eintrag in fontsize überge- */
  23. /*          ben werden. Über ein Popup können dann die in der Liste ange- */
  24. /*          gebenen Sets in EINEM xUFSL-Dialog geändert werden! Von den   */
  25. /*          weiteren Parametern werden in diesem Fall nur noch die Dia-   */
  26. /*          logfont-IDs beachtet. Der xUFSL versorgt die Einträge in der  */
  27. /*          XUFSL_LIST.                                                   */
  28. /*          Verwendungsbeispiel: Siehe CALLUFSL.C!                        */
  29. /**************************************************************************/
  30.  
  31. #if !defined( __XUFSL__)
  32.  
  33. #define __XUFSL__
  34.  
  35. /**************************************************************************/
  36. /* Kennung des xUfsl                                                      */
  37. /**************************************************************************/
  38. #define xUFS_ID           'xUFS'
  39.  
  40. /**************************************************************************/
  41. /* Rückgabewerte des xUfsl                                                */
  42. /**************************************************************************/
  43. #define UFS_RES_ERROR    -7       /* Auflösung kleiner als 640*400 Punkte */
  44. #define UFS_NO_HANDLE    -6       /* Kein Handle frei                     */
  45. #define UFS_NO_WINDOW    -5       /* Kein Fenster frei                    */
  46. #define UFS_NO_FONTS     -4       /* Keine Fonts geladen                  */
  47. #define UFS_NO_FONTSIZE  -3       /* Fontgröße nicht identifizierbar      */
  48. #define UFS_ACTIVE       -2       /* Fontselektor ist bereits aktiv       */
  49. #define UFS_ERROR        -1       /* Speichermangel o.ä.                  */
  50. #define UFS_STOP          0       /* <Abbruch> gewählt                    */
  51. #define UFS_OK            1       /* <Ok> gewählt                         */
  52.  
  53. /**************************************************************************/
  54. /* Dialogtypen --> dialtyp, s.u.                                          */
  55. /**************************************************************************/
  56. #define UFS_DIALOG        0       /* Modaler Dialog                       */
  57. #define UFS_WINDOW        1       /* Unmodaler Dialog                     */
  58.  
  59. /**************************************************************************/
  60. /* Flags für xUFSL --> flags, s.u.                                        */
  61. /**************************************************************************/
  62. #define UFS_SIZE_CHANGE   0x00000001  /* Schriftgröße änderbar?           */
  63. #define UFS_WIDTH_CHANGE  0x00000002  /* Schriftbreite änderbar?          */
  64. #define UFS_ATTR_CHANGE   0x00000004  /* Schriftattribute wählbar?        */
  65. #define UFS_SKEW_CHANGE   0x00000008  /* Schriftneigung änderbar?         */
  66. #define UFS_COLOR_CHANGE  0x00000010  /* Schriftfarbe änderbar?           */
  67. #define UFS_SIZE_DEFAULT  0x00000020  /* Schriftgröße "DEFAULT" erlaubt?  */
  68. #define UFS_ATTR_INVERS   0x00000040  /* Sonderattribut "invers" wählbar? */
  69. #define UFS_KERNING_INFO  0x00000080  /* Kerning-Informationen änderbar?  */
  70. #define UFS_GDOS_FONTS    0x00000100  /* GDOS-Fonts erlaubt?              */
  71. #define UFS_PROP_FONTS    0x00000200  /* Proportionalfonts erlaubt?       */
  72. #define UFS_BITMAP_FONTS  0x00000400  /* Nur Bitmap-Fonts erlaubt?        */
  73. #define UFS_WIND_DIALOG   0x00001000  /* Dialog im Fenster?               */
  74. #define UFS_ERROR_MSG     0x00008000  /* Fehler als Alertbox anzeigen?    */
  75. #define UFS_INDIRECT      0x80000000L /* Wird eine XUFSL_LIST verwendet?  */
  76.  
  77. /**************************************************************************/
  78. /* UFSL-Initialisierungsfunktion, nur aus Kompatibilitätsgründen imple-   */
  79. /* mentiert. Liefert immer SUCCESS.                                       */
  80. /**************************************************************************/
  81. typedef WORD cdecl (*UFSL_INIT)(void);
  82.  
  83. /**************************************************************************/
  84. /* Standard-Fontselektor                                                  */
  85. /**************************************************************************/
  86. typedef WORD cdecl (*UFSL)(
  87.   WORD   handle,   /* Handle der VDI-Workstation                           */
  88.   WORD   fonts,    /* Gesamtzahl der geladenen Fonts                       */
  89.   WORD   flag,     /* 0=Alle Fonts, 1=Nur unproportionale Fonts            */
  90.   UBYTE    *info,    /* Infotext                                             */
  91.   WORD   *fontid,  /* Gewählte Font-ID                                     */
  92.   WORD   *fontsize /* Gewählte Font-Größe                                  */
  93. );
  94.  
  95. /**************************************************************************/
  96. /* Neuer Standard-Fontselektor ab UFSL 0.97                               */
  97. /**************************************************************************/
  98. typedef WORD cdecl (*NUFSL)(
  99.   WORD   handle,   /* Handle der VDI-Workstation                           */
  100.   WORD   flag,     /* 0=Alle Fonts, 1=Nur unproportionale Fonts            */
  101.   UBYTE    *info,    /* Infotext                                             */
  102.   WORD   *fontid,  /* Gewählte Font-ID                                     */
  103.   WORD   *fontsize /* Gewählte Font-Größe                                  */
  104. );
  105.  
  106. /**************************************************************************/
  107. /* Benutzerdefinierte Hilfefunktion, sofern gewünscht. Nur wenn diese     */
  108. /* ungleich NULL ist, wird der Hilfe-Knopf überhaupt aktiviert.           */
  109. /**************************************************************************/
  110. typedef WORD cdecl (*UFSL_HELP)(void);
  111.  
  112. /**************************************************************************/
  113. /* Redraw-Funktion                                                        */
  114. /* Die Redraw-Funktion wird NICHT bei folgenden Ereignissen aufgerufen:   */
  115. /* WM_TOPPED, WM_NEWTOP, WM_CLOSED.                                       */
  116. /**************************************************************************/
  117. typedef void cdecl (*MSGFUNC)(
  118.   WORD event,    /* Event                                                  */
  119.   WORD *msgbuff  /* Message-Puffer                                         */
  120. );
  121.  
  122. /**************************************************************************/
  123. /* Schriftbreiten-Informationsstruktur ('FontWidthInfo')                  */
  124. /* pair   Pair-Kerning (0=nein, 1=ja): "Zusammenschieben" bestimmter      */
  125. /*        Buchstabenpaare (z.B. "Fa", "Ve").                              */
  126. /* track  Art des Track-Kernings (0=ohne, 1=normal, 2=eng, 3=sehr eng):   */
  127. /*        Hiermit wird der generelle Abstand zwischen den Buchstaben be-  */
  128. /*        stimmt.                                                         */
  129. /* width  Schriftbreite (0..MAX_CHAR_WIDTH Punkte)                        */
  130. /**************************************************************************/
  131. #define MAX_CHAR_WIDTH  8191
  132.  
  133. #if 0
  134.  
  135.  Ist auch in xfsl.h definiert!!
  136.  
  137. typedef struct {
  138.   UWORD  pair  : 1;
  139.   UWORD  track : 2;
  140.   UWORD  width : 13;
  141. } FW_INFO;
  142.  
  143. #endif
  144.  
  145. /**************************************************************************/
  146. /* Bei gesetztem UFS_INDIRECT-Bit wird statt in info ein Zeiger auf eine  */
  147. /* XUFSL_LIST übergeben. Die Anzahl der Einträge dieser Liste muß im Pa-  */
  148. /* rameter fontid übergeben werden.                                       */
  149. /**************************************************************************/
  150. typedef struct {
  151.   ULONG flags;        /* Flags zur Funktionsüberwachung           */
  152.   UBYTE            *entry;       /* Popup-Eintrag, muß eindeutig sein!       */
  153.   WORD         fontid;       /* Voreingestellte/gewählte ID              */
  154.   WORD         fontsize;     /* Voreingestellte/gewählte Größe           */
  155.   FW_INFO      fontwidth;    /* Voreingestellte/gewählte Breite+Kerning  */
  156.   WORD         fontattr;     /* Voreingestellte/gewählte Attribute       */
  157.   WORD         fontcol;      /* Voreingestellte/gewählte Farbe           */
  158.   WORD         fontskew;     /* Voreingestellte/gewählte Neigung         */
  159. } XUFSL_LIST;
  160.  
  161. /**************************************************************************/
  162. /* Extended-Fontselektor                                                  */
  163. /**************************************************************************/
  164. typedef WORD cdecl (*XUFSL)(
  165.   WORD    handle,       /* Handle der VDI-Workstation               */
  166.   ULONG    flags,        /* Flags zur Funktionsüberwachung           */
  167.   UBYTE    *title,       /* Fenstertitel, Default: Copyright-Info    */
  168.   UBYTE    *info,        /* Fensterinfo, Default: 'Schriftauswahl'   */
  169.                               /* bzw. Zeiger auf eine XUFSL_LIST          */
  170.   WORD   smallid,      /* ID SMALL-Zeichensatz im xUFSL-Dialog     */
  171.   WORD   ibmid,        /* ID IBM-Zeichensatz im xUFSL-Dialog       */
  172.   WORD   *fontid,      /* Voreingestellte/gewählte ID              */
  173.                               /* bzw. Anzahl der Einträge der XUFSL_LIST  */
  174.   WORD   *fontsize,    /* Voreingestellte/gewählte Größe           */
  175.                               /* bzw. Aufsatzpunkt in der XUFSL_LIST      */
  176.   FW_INFO       *fontwidth,   /* Voreingestellte/gewählte Breite und      */
  177.                               /* Kerning-Informationen                    */
  178.   WORD           *fontattr,    /* Voreingestellte/gewählte Attribute       */
  179.   WORD           *fontcol,     /* Voreingestellte/gewählte Farbe           */
  180.   WORD           *fontskew     /* Voreingestellte/gewählte Neigung         */
  181. );
  182.  
  183. /**************************************************************************/
  184. /* Eigentliche xUFSL-Struktur                                             */
  185. /**************************************************************************/
  186. typedef struct {
  187.   ULONG             id;               /* Kennung des xUFSL (xUFS)             */
  188.   UWORD          version;          /* Version (BCD-Format)                 */
  189.   UWORD          dialtyp;          /* Dialogtyp                            */
  190.   UFSL_INIT        fontsel_init;     /* Initialisierungsfunktion (Dummy)     */
  191.   UFSL         fontsel_input;    /* Standard-Selektorfunktion            */
  192.   OBJECT       *helpbutton;      /* Hilfe-Knopf (BOXTEXT), maximale      */
  193.                                  /* Textlänge 9 Zeichen (OHNE Prüfung!). */
  194.   UFSL_HELP    helpfunc;         /* Eigene Hilfefunktion                 */
  195.   UBYTE        *examplestr;      /* Beispieltext für Fontdarstellung     */
  196.   MSGFUNC      msgfunc;          /* Redrawfunktion                       */
  197.   NUFSL        fontsel_exinput;  /* Neuer Standard-Selektor              */
  198.   XUFSL        font_selexinput;  /* Extended-Selektorfunktion            */
  199. } xUFSL_struct;
  200.  
  201. #endif
  202.